package com.telcordia.cvas.rpn;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class CompositeMathOperatorTest {
	OperandStack stack;
	CompositeMathOperator op;
	
	@Before
	public void init() {
		stack = new OperandStack();
		stack.push(9);
		stack.push(3);
		stack.push(4);
		op = new CompositeMathOperator();
	}
	
	@Test
	public void sumOfPrimeFactors() {
		op.add(new PrimeFactors());
		op.add(new Sum());
		op.add(op);
		op.execute(stack);
		assertEquals(1, stack.size());
		assertEquals(16, stack.peek());
	}
	
	@Test
	public void primeFactorsOfSum() {
		op.add(new Sum());
		op.add(new PrimeFactors());
		op.execute(stack);
		assertEquals(4, stack.size());
		for(int i = 0; i < 4; ++i)
			assertEquals(2, stack.pop());
	}
}
